package ec.edu.ups.cidi.siia.plamdep.webcrawler.extractorlinks;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import ec.edu.ups.cidi.siia.plamdep.configuracion.ConfiguracionConexionWeb;
import ec.edu.ups.cidi.siia.plamdep.modelo.webcrawler.Bibliografia;
import ec.edu.ups.cidi.siia.plamdep.utils.Log;
import ec.edu.ups.cidi.siia.plamdep.webcrawler.descarga.HtmlUtils;
public class LinksBing implements IExtractorLinks
{
    private List<Bibliografia> resultados=new ArrayList<Bibliografia>(); //el listado de links encontrados
    private HtmlUtils utils=new HtmlUtils();
    public void sacaLinksBing(String html)
    {
		html=HtmlUtils.htmlToText(html);
		html=html.replaceAll("\n"," ");
    		
    		
        ArrayList<String> lis=(ArrayList<String>)this.utils.obtenerEtiqueta2(html, "<li class=\"b_algo\"", "/li>", true,0).clone();
        for(String li:lis)
        { 
            String url=HtmlUtils.contentBetween(li, "<h2><a href=\"", "\" h=\"");
            url=HtmlUtils.decodeURL(url); 
            String resume=HtmlUtils.contentBetween(li, "</span></span></div>", "</p>");
             resume=resume.replace("<p>","");
             resume=resume.replace("<div class=\"b_snippet\">","");
            if(url.length()>0)
            {
           		  //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksBing.class, "URL:"+url);
   				  //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksBing.class, "Resumen:"+resume+"\n");

            	  this.resultados.add(new Bibliografia(url,resume));
            	  if(resultados.size()>=ConfiguracionConexionWeb.limite_results)//limita el numero de resultados
                  	return;
                
            }
            
        } 
    }
    ArrayList<String> lis=new ArrayList<String> ();
    /**
     * Obtiene las etiquetas html <li> para obtener los links
     * @param html 
     */
    public void obtenerLIS(String html)
    {
    	try{
        Pattern p=Pattern.compile("(<li\\s)|(<li>)");
        Matcher m=p.matcher(html); 
        if(m.find())
        {
            Pattern p1=Pattern.compile("</li>");
            Matcher m1=p1.matcher(html); 
            if(m1.find())
            {
                    String li=html.substring(m.start(), m1.end());
                    lis.add(li);
                    html=html.substring(m1.end(), html.length()-1);
                    this.obtenerLIS(html);
            }
        }
    	}catch(Exception ex){}
    }
    
    public List<Bibliografia> getLinks() {
    return this.resultados;
    }
    
    public void setContenidoHTML(String html) {
        this.sacaLinksBing(html);
    }
}